Showing posts with label Tip and Trik. Show all posts
Showing posts with label Tip and Trik. Show all posts
3/01/2013
2/28/2013
DISPLAY 7 SEGMEN + DADU DIGITAL dengan IC 4026
Diposkan oleh
Unknown
di
07:41
Bahan-Bahan :
<!--[if !supportLists]-->1. <!--[endif]-->IC 555
<!--[if !supportLists]-->2. <!--[endif]-->IC 4026
<!--[if !supportLists]-->3. <!--[endif]-->Resistor 10k ohm (1buah), 100Kohm (1 buah) atau diganti dengan Potensiometer 100k ohm, 220 ohm (7 buah bila perlu)
<!--[if !supportLists]-->4. <!--[endif]-->Kapasitor 10 uF (1 buah)
<!--[if !supportLists]-->5. <!--[endif]-->Tombol tekan / push button
<!--[if !supportLists]-->6. <!--[endif]-->Baterai 4.5V
<!--[if !supportLists]-->7. <!--[endif]-->Kabel Jumper secukupnya
Skematik :
Keterangan : perhatikan kaki IC yg tidak urut, sesuaikan nomer kaki pada skematik dengan kaki pin di IC sebenarnya
Langkah Merakit ke Breadboard :
<!--[if !supportLists]-->1. <!--[endif]-->Setelah paham merangkai percobaan 555 maka percobaan kali ini akan mudah saja tinggal mengikuti gambar skematik yang ditampilkan sebelumnya, dan hasil di breadboard seperti ini :

<!--[if !supportLists]-->2. <!--[endif]-->Pushbutton memiliki 4 kaki dimana ada 2 buah pasang kaki yg tersambung.
<!--[if !supportLists]-->3. <!--[endif]-->Jika tegangan baterai melebihi 6V, maka sebelum masuk ke 7 segmen diperlukan resistor 220 ohm atau lebih. Jika memakai 4.5 V resistor bisa tidak dipakai.
<!--[if !supportLists]-->4. <!--[endif]-->Putar-putar potensiometer untuk mendapatkan kecepatan penambahan digit yang diinginkan.
<!--[if !supportLists]-->5. <!--[endif]-->Jika kecepatan perubahan digit sangat cepat, maka rangkaian ini dapat digunakan sebagai “DADU ELEKTRONIK”. Jadi ketika tombol ditekan maka angka akan berhenti pada digit angka yang tidak kita duga sebelumnya.
2/27/2013
Tutorial Eagle Step By Step
Diposkan oleh
Unknown
di
07:39
Kali ini akan kita bahas mengenai routing pcb dengan menggunakan Eagle Cad Software. Software eagle adalah software cad paling umum digunakan kalangan pelajar, karena ada license yg bisa dibeli murah jika status masih pelajar/mahasiswa. Tapi "jamu" buat software ini banyak jadi silahkan ubek-ubek aja dunia maya(not Recommended)
1. Membuat Schematic Baru
Buatlah Nama project yg dikehendaki dilanjutkan dengan membuat schematic sesuai gambar berikut:

setelah itu akan muncul windows baru / worksheet tempat kita menggambar schematic
2. Menyusun Schematic diatas Editor
Langkah pertama adalah dengan memilih komponen yg digunakan melalui tombol "ADD" . Jika ada komponen yg digunakan sejenis dan berulang, hanya diperlukan pemilihan sekali saja selanjutnya bisa dicopy paste di editornya

contoh diatas jika kita ingin memilih komponen IC CMOS 4017

contoh diatas jika ingin menambah simbol supply GROUND
setelah semua komponen diletakkan di editor maka dilanjutkan dengan menghubungkan kaki-kaki komponen sesuai dengan keinginan. Toolbar sebelah kiri sangat membantu dalam pengaturan schematic, seperti ilustrasi berikut ini

klik gambar untuk memperbesar
beberapa komponen tidak mencantumkan kaki-kaki yg umum seperti VCC & GND (tapi di pcb ada) , kadang ini akan membuat bingung...jangan khawatir kita "INVOKE" saja melalui toolbar sesuai gambar berikut

3. Routing PCB
Setelah semua schematic disusun sesuai keinginan, lanjutkan menuju ke PCB routing dengan perintah File==>Switch to Board
Mulanya akan muncul PCB dengan kabel semrawut dan tanpa grid/kotak seperti gambar dibawah. Pindahkan semua komponen dengan :toolbal move + toolbar select + drag mouse ke semua komponen + klik kanan + Move group, ke dalam kotak PCB layout

Setelah itu susun komponen sesuai keinginan dan selanjutnya bisa membuat layout PCB secara AUTO dengan memilih tombol auto route dan memilih jumlah layer pcb yg diinginkan

klik untuk memperbesar
jika ingin kembali ke mode awal sebelum di routing maka tinggal ikuti urutan ...pilih ripup + pilih select + drag mouse ke komponen + klik kanan + pilih ripup group

4. Routing Manual
Terkadang routing auto akan menghasilkan routing yg aneh2 dan ga masuk akal. Untuk itu perlu dilakukan routing manual. Toolbar yg penting adalah "ROUTE", "RIPUP" , "VIA" dan "RATSNET" sesuai gambar dibawah . Untuk meroutingkan PCB klik toolbar ROUTE dan klik antara kaki komponen yg akan di sambung. Ukuran routing dapat dipilih di toolbar sebelah atas ( "width"). Jika routing manual tidak memungkinkan maka jurus VIA / Jumper dapat membantu dengan membuat "AIRWAYS" yg nantinya akan disolder dengan kabel pada bagian atas PCB

klik untuk memperbesar
untuk mempercantik PCB dan menghemat waktu "ETCHING", maka daerah2 yg kosong perlu diberikan suatu gambar polygon. Pada umumnya polygon juga mewakili sinyal yg common/dipake berulang di PCB, umumnya sih untuk menghubungkan semua sinyal ground. Untuk membuatnya gampang saja, dengan menggambar polygon disekitar komponen dan menamakannya dengan nama signal yg akan disambungkan. jika tidak diberi nama maka polygon akan berdiri sendiri.

dan ketika tombol RATSNET ditekan maka PCB akan menjadi terhubung seperti ini

tetapi permasalahannya antara polygon dan routing terlalu mepet...jangan khawatir, kita atur saja jarak antar routing melalui "DRC RULES"

setting DRC ini dapat disimpan dan dipanggil pada desain PCB selanjutnya

4. PrintOut PCB
Setelah PCB layout selesai, dilanjutkan dengan printing layout ke atas kertas , plastik transparansi, glossy dsb. Layer yg dipilih hanya BOTTOM, PADS, dan VIA

selanjutnya lakukan printing secara mirror (untuk cara setrika) atau disesuaikan dengan kebutuhan


1. Membuat Schematic Baru
Buatlah Nama project yg dikehendaki dilanjutkan dengan membuat schematic sesuai gambar berikut:

setelah itu akan muncul windows baru / worksheet tempat kita menggambar schematic
2. Menyusun Schematic diatas Editor
Langkah pertama adalah dengan memilih komponen yg digunakan melalui tombol "ADD" . Jika ada komponen yg digunakan sejenis dan berulang, hanya diperlukan pemilihan sekali saja selanjutnya bisa dicopy paste di editornya

contoh diatas jika kita ingin memilih komponen IC CMOS 4017

contoh diatas jika ingin menambah simbol supply GROUND
setelah semua komponen diletakkan di editor maka dilanjutkan dengan menghubungkan kaki-kaki komponen sesuai dengan keinginan. Toolbar sebelah kiri sangat membantu dalam pengaturan schematic, seperti ilustrasi berikut ini

klik gambar untuk memperbesar
beberapa komponen tidak mencantumkan kaki-kaki yg umum seperti VCC & GND (tapi di pcb ada) , kadang ini akan membuat bingung...jangan khawatir kita "INVOKE" saja melalui toolbar sesuai gambar berikut

3. Routing PCB
Setelah semua schematic disusun sesuai keinginan, lanjutkan menuju ke PCB routing dengan perintah File==>Switch to Board
Mulanya akan muncul PCB dengan kabel semrawut dan tanpa grid/kotak seperti gambar dibawah. Pindahkan semua komponen dengan :toolbal move + toolbar select + drag mouse ke semua komponen + klik kanan + Move group, ke dalam kotak PCB layout

Setelah itu susun komponen sesuai keinginan dan selanjutnya bisa membuat layout PCB secara AUTO dengan memilih tombol auto route dan memilih jumlah layer pcb yg diinginkan

klik untuk memperbesar
jika ingin kembali ke mode awal sebelum di routing maka tinggal ikuti urutan ...pilih ripup + pilih select + drag mouse ke komponen + klik kanan + pilih ripup group

4. Routing Manual
Terkadang routing auto akan menghasilkan routing yg aneh2 dan ga masuk akal. Untuk itu perlu dilakukan routing manual. Toolbar yg penting adalah "ROUTE", "RIPUP" , "VIA" dan "RATSNET" sesuai gambar dibawah . Untuk meroutingkan PCB klik toolbar ROUTE dan klik antara kaki komponen yg akan di sambung. Ukuran routing dapat dipilih di toolbar sebelah atas ( "width"). Jika routing manual tidak memungkinkan maka jurus VIA / Jumper dapat membantu dengan membuat "AIRWAYS" yg nantinya akan disolder dengan kabel pada bagian atas PCB

klik untuk memperbesar
untuk mempercantik PCB dan menghemat waktu "ETCHING", maka daerah2 yg kosong perlu diberikan suatu gambar polygon. Pada umumnya polygon juga mewakili sinyal yg common/dipake berulang di PCB, umumnya sih untuk menghubungkan semua sinyal ground. Untuk membuatnya gampang saja, dengan menggambar polygon disekitar komponen dan menamakannya dengan nama signal yg akan disambungkan. jika tidak diberi nama maka polygon akan berdiri sendiri.

dan ketika tombol RATSNET ditekan maka PCB akan menjadi terhubung seperti ini

tetapi permasalahannya antara polygon dan routing terlalu mepet...jangan khawatir, kita atur saja jarak antar routing melalui "DRC RULES"

setting DRC ini dapat disimpan dan dipanggil pada desain PCB selanjutnya

4. PrintOut PCB
Setelah PCB layout selesai, dilanjutkan dengan printing layout ke atas kertas , plastik transparansi, glossy dsb. Layer yg dipilih hanya BOTTOM, PADS, dan VIA

selanjutnya lakukan printing secara mirror (untuk cara setrika) atau disesuaikan dengan kebutuhan


2/26/2013
BIKIN PCB MURAH MERIAH tapi KUALITAS OK !
Diposkan oleh
Unknown
di
07:35
untuk membuat PCB home made, ada bermacam cara
bisa didapat di instructable.com , seabrek cara dibeber disana
tapi yang menurut saya mengeluarkan uang paling sedikit cara yg satu ini
1. Desain PCB melalui software CAD semacam Eagle layout atau sebangsanya
Tinggal googling aja, banyak tersedia EAGLE Layout Editor + kracknya
2. Print Hasil Layout PCB dengan LASER PRINTER, keatas kertas MAJALAH BEKAS. yang dipakai adalah kertas majalah (biasanya majalah bisnis) yang tipis & mengkilat. Majalah / Buletin TV kabel contoh yg paling gampang
3. Bila tidak ada printer laser, print di kertas biasa, kemudian Lakukan PhotoCopy diatas kertas majalah tadi
4. siapkan PCB polos ( 1 layer saja), bersihkan dari kotoran menggunakan kertas gosok halus
5. Panaskan SETRIKA, kemudian setrika kertas majalah yg sudah ada gambar PCB nya tadi ke atas tembaga PCB , tekan2, mungkin diperlukan trial & error beberapa kali dan perkirakan transfer sudah merata baru kita boleh selesai setrika.
6. Rendam PCB tadi di air hangat ( dingin juga boleh) sampai kertas tipis tadi mengelupas, hati2 agar tidak merusak jalur PCB. Pastikan semua kertas yg ada di LUAR JALUR bersih , sedangkan yang di atas jalur tidak masalah jika ada sisa kertas ( asal tidak meninggalkan serat2 berlebihan) . perbaiki jalur2 yang mungkin rusak/ tipis dengan spidol permanen.
7. Siap di etching ( pake Ferry Clorit ataupun larutan HCL + H202)
8. Untuk ferry clorit, gunakan air hangat (jangan panas), perlu goyang2 tempat/ wadah etchingnya, tambahkan feri clorit ke larutan jika kekuatan oksidasinya berkurang, larutan sisa bisa disimpan & dipakai lagi untuk proses etching di lain waktu ( tambah feri clorit baru sedikit saja).
9. HCL yg umum dijual = 30 %, H202 < 5 % , jika kondisi seperti ini bisa di gunakan komposisi 1:1 atau 3:4 , ingat tuang HCL ke H202, jangan sebaliknya. jika komposisi H202 > 10 %, perlu penambahan air agar tidak terlalu cepat proses oksidasinya ( merusak masking )
10. HCL + H202 hanya sekali pake, sebab tidak bisa disimpan dalam botol
11. setelah proses etching dirasa selesai, bilas PCB dengan air hangat atau air mengalir (kran)
12. PCB siap di bor, setelah semua lubang komponen di bor, bersihkan masking dengan Aceton / thiner CAT A. Agar PCB tampak bersih & tidak beroksidasi dengan udara, bisa dilaminasi dengan lapisan perak (mahal), liquid tin ( mahal & jarang ada), atau di lapisi ( tipis) dengan cat semprot (lacquer) transparan ( 10 ribu juga dapet)
13. PCB siap di solder
2/23/2013
Jam Sederhana Dengan Attiny 2313
Diposkan oleh
Unknown
di
07:26
Kali ini kita akan menggunakan 4 buah 7 segment untuk membuat jam sederhana
"wahhh..kalo banyak 7 segmentnya, ngabisin banyak port dong ?"
Jangan khawatir, kita pake teknik " SCANNING", artinya kita hidupin segment satu persatu, tiap segment diparalel saja...tp kita hidupin dengan memberikan switch/saklar ke common port 7segment yg dikontrol oleh port micro ..dan scanningnya cepetttt...sehingga mata kita melihatnya seperti nyala biasa aja.
jadi untuk bikin 7-segment 4 buah, diperlukan 7 port display(diparalel) + 4 port control
rangkaiannya seperti berikut :
klik untuk memperbesar gambar
"wahhh..kalo banyak 7 segmentnya, ngabisin banyak port dong ?"
Jangan khawatir, kita pake teknik " SCANNING", artinya kita hidupin segment satu persatu, tiap segment diparalel saja...tp kita hidupin dengan memberikan switch/saklar ke common port 7segment yg dikontrol oleh port micro ..dan scanningnya cepetttt...sehingga mata kita melihatnya seperti nyala biasa aja.
jadi untuk bikin 7-segment 4 buah, diperlukan 7 port display(diparalel) + 4 port control
rangkaiannya seperti berikut :

Biasanya untuk display yg agak besar, kita perlu transistor untuk mengatur scanning, tp karena contoh kali ini memakai segment yg kecil maka tidak memerlukan kontrol memakai transistor ( coba pake transistor dijamin nyalanya redup !!)
Prinsip jam kali ini menggunakan prinsip DELAY, jadi tidak terlalu akurat.
Sebenernya mau seh membagi ilmu untuk jam yg super akurat, tapi ntar aja yahh..soalnya memerlukan pengetahuan mengenai "Timer/Counter" dari microcontroller
source code nya sebagai berikut :
#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>
int jam=0, min=0, detik=0; //variable global untuk menyimpan data2 waktu
void segmen (int angka)
{
switch (angka)
{
case 0 : { PORTB =0b1000000; break ; }
case 1 : { PORTB =0b1111001; break ; }
case 2 : { PORTB =0b0100100; break ; }
case 3 : { PORTB =0b0110000; break ; }
case 4 : { PORTB =0b0011001; break ; }
case 5 : { PORTB =0b0010010; break ; }
case 6 : { PORTB =0b0000010; break ; }
case 7 : { PORTB =0b1111000; break ; }
case 8 : { PORTB =0b0000000; break ; }
case 9 : { PORTB =0b0010000; break ; }
case 10 : { PORTB =0b1111111; break ; } //blank biar ga berbayang
}
}
void clock (void) //fungsi penambah waktu
{
detik ++; //jika fungsi dipanggil maka var detik ditambah
if ( detik == 60) // tambahkan menit jika 60 detik
{ detik=0; //untuk kembali ke 0
min++;
}
if ( min == 60) // tambahkan jam jika 60 menit
{ min = 0; //untuk kembali ke 0
jam++ ;
}
if (jam == 24) jam=0; //untuk kembali ke 0
}
int main(void)
{
int counter=0; //variabel delay
int digit; //variabel digit yang ditampilkan
// Port untuk display 7 segment
DDRB |= (1<<PB0)|(1<<PB1)|(1<<PB2)|(1<<PB3)|(1<<PB4)|(1<<PB5)|(1<<PB6);
//port untuk scanning ( PD0-4) dan dot ":" (PD6)
DDRD |= (1<<PD0)|(1<<PD1)|(1<<PD2)|(1<<PD3) |(1<<PD6);
//tombol untuk nambah jam/menit
DDRD &= ~(1<<PD4) & ~(1<<PD5) ;
PORTD = (1<<PD6) ; // blink untuk ":"
while(1)
{
counter++ ; //bikin delay nambah terusss
// sesuaikan nilai max counter dengan detik yg pas, tentunya tidak akurat
if(counter == 30) { counter =0 ; clock(); }
// nilai 1/2 dari counter untuk blink ":"
if(counter == 15) PORTD ^=(1<<PD6) ;
else{
segmen(10); // kasi display "mati' agar tidak berbayang
//digit pertama
digit = jam/10;
PORTD |= (1<<PD0); // 7 segment no1 hidup..yg laen mati
PORTD &= ~(1<<PD1) & ~(1<<PD2) & ~(1<<PD3) ;
segmen(digit);
_delay_ms(5);
//digit ke 2
segmen(10);
digit = jam%10;
PORTD |= (1<<PD1); // 7 segment no2 hidup..yg laen mati
PORTD &= ~(1<<PD0) & ~(1<<PD2) & ~(1<<PD3) ;
segmen(digit);
_delay_ms(5);
//digit ke 3
segmen(10);
digit = min/10;
PORTD |= (1<<PD2); // 7 segment no3 hidup..yg laen mati
PORTD &= ~(1<<PD1) & ~(1<<PD0) & ~(1<<PD3) ;
segmen(digit);
_delay_ms(5);
//digit ke 4
segmen(10);
digit = min%10;
PORTD |= (1<<PD3); // 7 segment no4 hidup..yg laen mati
PORTD &= ~(1<<PD1) & ~(1<<PD2) & ~(1<<PD0) ;
segmen(digit);
_delay_ms(5);
}
if (bit_is_set(PIND, PIND4)) //tombol nambah jam
{
jam++;
if(jam==24) jam =0;
_delay_ms(100);
}
if (bit_is_set(PIND, PIND5)) //tombol nambah menit
{
min++;
if(min==60) min=0;
_delay_ms(100);
}
}
return 0;
}
jika ingin mengetest/kalibrasi delay detik, ganti salah satu digit untuk menampilkan detik
//digit pertama
digit = detik/10;
PORTD |= (1<<PD0); // 7 segment no1 hidup..yg laen mati
PORTD &= ~(1<<PD1) & ~(1<<PD2) & ~(1<<PD3) ;
segmen(digit);
_delay_ms(5);
//digit ke 2
segmen(10);
digit = detik%10;
PORTD |= (1<<PD1); // 7 segment no2 hidup..yg laen mati
PORTD &= ~(1<<PD0) & ~(1<<PD2) & ~(1<<PD3) ;
segmen(digit);
_delay_ms(5);
hasilnya dapat dilihat seperti berikut :
Prinsip jam kali ini menggunakan prinsip DELAY, jadi tidak terlalu akurat.
Sebenernya mau seh membagi ilmu untuk jam yg super akurat, tapi ntar aja yahh..soalnya memerlukan pengetahuan mengenai "Timer/Counter" dari microcontroller
source code nya sebagai berikut :
#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>
int jam=0, min=0, detik=0; //variable global untuk menyimpan data2 waktu
void segmen (int angka)
{
switch (angka)
{
case 0 : { PORTB =0b1000000; break ; }
case 1 : { PORTB =0b1111001; break ; }
case 2 : { PORTB =0b0100100; break ; }
case 3 : { PORTB =0b0110000; break ; }
case 4 : { PORTB =0b0011001; break ; }
case 5 : { PORTB =0b0010010; break ; }
case 6 : { PORTB =0b0000010; break ; }
case 7 : { PORTB =0b1111000; break ; }
case 8 : { PORTB =0b0000000; break ; }
case 9 : { PORTB =0b0010000; break ; }
case 10 : { PORTB =0b1111111; break ; } //blank biar ga berbayang
}
}
void clock (void) //fungsi penambah waktu
{
detik ++; //jika fungsi dipanggil maka var detik ditambah
if ( detik == 60) // tambahkan menit jika 60 detik
{ detik=0; //untuk kembali ke 0
min++;
}
if ( min == 60) // tambahkan jam jika 60 menit
{ min = 0; //untuk kembali ke 0
jam++ ;
}
if (jam == 24) jam=0; //untuk kembali ke 0
}
int main(void)
{
int counter=0; //variabel delay
int digit; //variabel digit yang ditampilkan
// Port untuk display 7 segment
DDRB |= (1<<PB0)|(1<<PB1)|(1<<PB2)|(1<<PB3)|(1<<PB4)|(1<<PB5)|(1<<PB6);
//port untuk scanning ( PD0-4) dan dot ":" (PD6)
DDRD |= (1<<PD0)|(1<<PD1)|(1<<PD2)|(1<<PD3) |(1<<PD6);
//tombol untuk nambah jam/menit
DDRD &= ~(1<<PD4) & ~(1<<PD5) ;
PORTD = (1<<PD6) ; // blink untuk ":"
while(1)
{
counter++ ; //bikin delay nambah terusss
// sesuaikan nilai max counter dengan detik yg pas, tentunya tidak akurat
if(counter == 30) { counter =0 ; clock(); }
// nilai 1/2 dari counter untuk blink ":"
if(counter == 15) PORTD ^=(1<<PD6) ;
else{
segmen(10); // kasi display "mati' agar tidak berbayang
//digit pertama
digit = jam/10;
PORTD |= (1<<PD0); // 7 segment no1 hidup..yg laen mati
PORTD &= ~(1<<PD1) & ~(1<<PD2) & ~(1<<PD3) ;
segmen(digit);
_delay_ms(5);
//digit ke 2
segmen(10);
digit = jam%10;
PORTD |= (1<<PD1); // 7 segment no2 hidup..yg laen mati
PORTD &= ~(1<<PD0) & ~(1<<PD2) & ~(1<<PD3) ;
segmen(digit);
_delay_ms(5);
//digit ke 3
segmen(10);
digit = min/10;
PORTD |= (1<<PD2); // 7 segment no3 hidup..yg laen mati
PORTD &= ~(1<<PD1) & ~(1<<PD0) & ~(1<<PD3) ;
segmen(digit);
_delay_ms(5);
//digit ke 4
segmen(10);
digit = min%10;
PORTD |= (1<<PD3); // 7 segment no4 hidup..yg laen mati
PORTD &= ~(1<<PD1) & ~(1<<PD2) & ~(1<<PD0) ;
segmen(digit);
_delay_ms(5);
}
if (bit_is_set(PIND, PIND4)) //tombol nambah jam
{
jam++;
if(jam==24) jam =0;
_delay_ms(100);
}
if (bit_is_set(PIND, PIND5)) //tombol nambah menit
{
min++;
if(min==60) min=0;
_delay_ms(100);
}
}
return 0;
}
jika ingin mengetest/kalibrasi delay detik, ganti salah satu digit untuk menampilkan detik
//digit pertama
digit = detik/10;
PORTD |= (1<<PD0); // 7 segment no1 hidup..yg laen mati
PORTD &= ~(1<<PD1) & ~(1<<PD2) & ~(1<<PD3) ;
segmen(digit);
_delay_ms(5);
//digit ke 2
segmen(10);
digit = detik%10;
PORTD |= (1<<PD1); // 7 segment no2 hidup..yg laen mati
PORTD &= ~(1<<PD0) & ~(1<<PD2) & ~(1<<PD3) ;
segmen(digit);
_delay_ms(5);
hasilnya dapat dilihat seperti berikut :
2/22/2013
Bermain Dengan Dot Matrix "LoveHurt"
Diposkan oleh
Unknown
di
07:26
Siapkan bahan-bahan seperti berikut:
rangkaiannya seperti ini :
letakkan LED MATRIX sesuai dengan SOCKET IC yg dibelah tadi
karena ga ada baterai ( punya tempatnya doang) jadi pake adaptor 3 Volt aja
Script code dalam Bahasa C /WinAvr seperti berikut:
#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/pgmspace.h>
#include <string.h>
#include <avr/eeprom.h>
//Progmem simpannya di FLASH memory
const char love1[] PROGMEM =
{
0b0011110,
0b0100001,
0b1000010,
0b0100001,
0b0011110
};
const char love2[] PROGMEM =
{
0b0001100,
0b0010010,
0b0100100,
0b0010010,
0b0001100
};
const char L[] PROGMEM ={0x7f, 0x7f, 0x40, 0x40, 0x20};
const char O[] PROGMEM ={0x3e, 0x7f, 0x41, 0x41, 0x3e};
const char V[] PROGMEM ={0x3f, 0x7e, 0x40, 0x20, 0x1f};
const char E[] PROGMEM ={0x7f, 0x7f, 0x49, 0x49, 0x41};
const char H[] PROGMEM ={0x7f, 0x7f, 0x08, 0x08, 0x7f};
const char U[] PROGMEM ={0x3f, 0x7f, 0x40, 0x40, 0x3f};
const char R[] PROGMEM ={0x7f, 0x7f, 0x11, 0x29, 0x46};
const char T[] PROGMEM ={0x03, 0x03, 0x7f, 0x03, 0x02};
const char creature[]={0x4e, 0x31, 0x35, 0x31, 0x4e}; //simpan di memory/RAM aja
uint8_t EEMEM tengkorak[5]= {0x1e, 0x75, 0x61, 0x75, 0x1e}; //simpan di EEPROM
uint8_t EEMEM pacman[5]= {0x26, 0x67, 0x67, 0x7f, 0x3e}; //simpan di EEPROM
char dotnya[5],scrolnya[7];
void tulis(uint8_t lama)
{
uint8_t a,b;
for(a=0 ; a<lama ; a++)
{
for(b=0 ; b<5 ; b++)
{
PORTB = ~(1<<b) ;
PORTD = dotnya[b];
_delay_ms(2);
}
}
}
void geser(uint8_t lama)
{
uint8_t a,b;
for(a=0 ; a<11 ; a++)
{
if( a<6)
{
for(b=0 ; b<(5-a) ; b++) dotnya[b]=0x80;
for(b=(5-a); b<5 ;b++) dotnya[b]=scrolnya[b-5+a];
tulis(10);
}
else if (a==6) tulis(lama);
else
{ for(b=0 ; b<11-a ; b++) dotnya[b]=scrolnya[a-5+b];
for(b=(11-a); b<11 ;b++) dotnya[b]=0x80;
tulis(10);
}
}
}
void naik (uint8_t lama)
{
{ uint8_t q,step=0;
while(step!=16)
{
if( step <8)
{
for(q=0 ; q < 5 ; q++) dotnya[q] = scrolnya[q] << (7 - step) ;
tulis(10);
}
else if (step == 8)
{
tulis(lama);
}
else
{
for(q=0 ; q < 5 ; q++) dotnya[q] = scrolnya[q] >> (step - 7) ;
tulis(10);
}
step++;
}
}
}
int main(void)
{
DDRD = 0b1111111; // untuk baris
DDRB = 0b11111; // untuk kolom
PORTD =0; // Set all pins low
PORTB =0b11111; //matikan layar
while(1)
{
// yang ini nulis langsung
strncpy_P(dotnya,love2,5);
tulis(20);
strncpy_P(dotnya,love1,5);
tulis(40);
strncpy_P(dotnya,love2,5);
tulis(20);
strncpy_P(dotnya,love1,5);
tulis(40);
strncpy_P(dotnya,love2,5);
tulis(20);
strncpy_P(dotnya,love1,5);
tulis(40);
//yang ini pake function geser
strncpy_P(scrolnya,L,5);
geser(50);
strncpy_P(scrolnya,O,5);
geser(50);
strncpy_P(scrolnya,V,5);
geser(50);
strncpy_P(scrolnya,E,5);
geser(50);
strncpy_P(scrolnya,H,5);
geser(50);
strncpy_P(scrolnya,U,5);
geser(50);
strncpy_P(scrolnya,R,5);
geser(50);
strncpy_P(scrolnya,T,5);
geser(50);
//geser ambil dari RAM
strncpy(scrolnya,creature,5); //tanpa _P karena ambil di RAM
naik(50);
//ambil dari eeprom ..mengirit..
eeprom_read_block((void*)&scrolnya,(const void*)&tengkorak, 5);
naik(50);
eeprom_read_block((void*)&scrolnya,(const void*)&pacman, 5);
geser(50);
}
return 0;
}
hasil akhirnya seperti di video berikut :
SELAMAT MENCOBA

Attiny 2313 Led matrix 7x5 R 10K Diode 4148 PCB lobang Header 2x5 buat ISP programmer (optional - Bisa diprogram di Breadboard) Socket 20 untuk ATtiny, dan soket 14 ( dibelah dua ) buat tempat Led matrix |
rangkaiannya seperti ini :

Kemudian komponen dirangkai diatas PCB lobang, ato bisa juga memakai bahan lain( disesuaikan dengan tempat yg mau di pake, misale kotak hadiah , papan tripleks dan lain sebagainya)


letakkan LED MATRIX sesuai dengan SOCKET IC yg dibelah tadi

karena ga ada baterai ( punya tempatnya doang) jadi pake adaptor 3 Volt aja

Script code dalam Bahasa C /WinAvr seperti berikut:
#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/pgmspace.h>
#include <string.h>
#include <avr/eeprom.h>
//Progmem simpannya di FLASH memory
const char love1[] PROGMEM =
{
0b0011110,
0b0100001,
0b1000010,
0b0100001,
0b0011110
};
const char love2[] PROGMEM =
{
0b0001100,
0b0010010,
0b0100100,
0b0010010,
0b0001100
};
const char L[] PROGMEM ={0x7f, 0x7f, 0x40, 0x40, 0x20};
const char O[] PROGMEM ={0x3e, 0x7f, 0x41, 0x41, 0x3e};
const char V[] PROGMEM ={0x3f, 0x7e, 0x40, 0x20, 0x1f};
const char E[] PROGMEM ={0x7f, 0x7f, 0x49, 0x49, 0x41};
const char H[] PROGMEM ={0x7f, 0x7f, 0x08, 0x08, 0x7f};
const char U[] PROGMEM ={0x3f, 0x7f, 0x40, 0x40, 0x3f};
const char R[] PROGMEM ={0x7f, 0x7f, 0x11, 0x29, 0x46};
const char T[] PROGMEM ={0x03, 0x03, 0x7f, 0x03, 0x02};
const char creature[]={0x4e, 0x31, 0x35, 0x31, 0x4e}; //simpan di memory/RAM aja
uint8_t EEMEM tengkorak[5]= {0x1e, 0x75, 0x61, 0x75, 0x1e}; //simpan di EEPROM
uint8_t EEMEM pacman[5]= {0x26, 0x67, 0x67, 0x7f, 0x3e}; //simpan di EEPROM
char dotnya[5],scrolnya[7];
void tulis(uint8_t lama)
{
uint8_t a,b;
for(a=0 ; a<lama ; a++)
{
for(b=0 ; b<5 ; b++)
{
PORTB = ~(1<<b) ;
PORTD = dotnya[b];
_delay_ms(2);
}
}
}
void geser(uint8_t lama)
{
uint8_t a,b;
for(a=0 ; a<11 ; a++)
{
if( a<6)
{
for(b=0 ; b<(5-a) ; b++) dotnya[b]=0x80;
for(b=(5-a); b<5 ;b++) dotnya[b]=scrolnya[b-5+a];
tulis(10);
}
else if (a==6) tulis(lama);
else
{ for(b=0 ; b<11-a ; b++) dotnya[b]=scrolnya[a-5+b];
for(b=(11-a); b<11 ;b++) dotnya[b]=0x80;
tulis(10);
}
}
}
void naik (uint8_t lama)
{
{ uint8_t q,step=0;
while(step!=16)
{
if( step <8)
{
for(q=0 ; q < 5 ; q++) dotnya[q] = scrolnya[q] << (7 - step) ;
tulis(10);
}
else if (step == 8)
{
tulis(lama);
}
else
{
for(q=0 ; q < 5 ; q++) dotnya[q] = scrolnya[q] >> (step - 7) ;
tulis(10);
}
step++;
}
}
}
int main(void)
{
DDRD = 0b1111111; // untuk baris
DDRB = 0b11111; // untuk kolom
PORTD =0; // Set all pins low
PORTB =0b11111; //matikan layar
while(1)
{
// yang ini nulis langsung
strncpy_P(dotnya,love2,5);
tulis(20);
strncpy_P(dotnya,love1,5);
tulis(40);
strncpy_P(dotnya,love2,5);
tulis(20);
strncpy_P(dotnya,love1,5);
tulis(40);
strncpy_P(dotnya,love2,5);
tulis(20);
strncpy_P(dotnya,love1,5);
tulis(40);
//yang ini pake function geser
strncpy_P(scrolnya,L,5);
geser(50);
strncpy_P(scrolnya,O,5);
geser(50);
strncpy_P(scrolnya,V,5);
geser(50);
strncpy_P(scrolnya,E,5);
geser(50);
strncpy_P(scrolnya,H,5);
geser(50);
strncpy_P(scrolnya,U,5);
geser(50);
strncpy_P(scrolnya,R,5);
geser(50);
strncpy_P(scrolnya,T,5);
geser(50);
//geser ambil dari RAM
strncpy(scrolnya,creature,5); //tanpa _P karena ambil di RAM
naik(50);
//ambil dari eeprom ..mengirit..
eeprom_read_block((void*)&scrolnya,(const void*)&tengkorak, 5);
naik(50);
eeprom_read_block((void*)&scrolnya,(const void*)&pacman, 5);
geser(50);
}
return 0;
}
Script code diatas dibuat dalam mode FLASH, RAM, dan EEPROM, jadi ketika download program ke IC harus memprogram FLASH dulu kemudian dilanjutkan dengan EEPROM.
FLASH extensinya .hex sedangkan isi EEPROM extensinya .eep
FLASH extensinya .hex sedangkan isi EEPROM extensinya .eep

hasil akhirnya seperti di video berikut :
SELAMAT MENCOBA
2/18/2013
ATTINY2313 I2C MUSIC PLAYER
Diposkan oleh
Unknown
di
07:13

setelah berhasil membuat downloader EEPROM serial (I2C) kepikiran juga buat ngemanfaatin eeprom ini untuk nyimpan sesuatu. Bisa aja digunakan menyimpan data text untuk project lovehurts sehingga tulisannya lebih panjang. Tapi kali ini akan saya pergunakan untuk menyimpan data wav
Langkah-langkah yang perlu dikuasai adalah:
1. Memutar wav file (PCM 8bit mono) yang pernah dibahas disini
2. Akses EEPROM dengan I2C menggunakan library Pfleury , untuk librarynya bisa didownload disini
Kita bahas dulu cara akses I2C menggunakan TWIMASTER Pfleury, ada i2cmaster.h (include) i2cmaster.S (add source code) dan twimaster.c (dicopy saja). Secara default library ini menggunakan aturan port SDA / SCL dari ATMEGA, sehingga untuk ATTiny2313 edit i2cmaster.S dibagian ini :
Code:
;***** Adapt these SCA and SCL port and pin definition to your target !! ; #define SDA 5 // SDA Port B, Pin 5 #define SCL 7 // SCL Port B, Pin 7 #define SDA_PORT PORTB // SDA Port B #define SCL_PORT PORTB // SCL Port B
Penggunaan library ini menggunakan beberapa perintah seperti berikut :
#define Dev24C64 0xA0
define ini berguna sebagai addressing i2C, karena bus i2C dapat dicascade


untuk IC 24C64 menggunakan addressing 8bit = 1,0,1,0, A2, A1, A0, [direction] , sehingga jika menggunakan 1 buah ic saja maka nilai define adalah 0xA0
i2c_init(); : inisialisasi awal
i2c_start_wait(Dev24C64+I2C_WRITE);
i2c_rep_start(Dev24C02+I2C_READ);
masukkan adress IC + Arah , dalam include sudah di define I2C_WRITE = 0 , I2C_READ =1
sequence untuk menulis :
Code:
i2c_start_wait(Dev24C64+I2C_WRITE) i2c_write(0x05); // tulis alamat memory = 5 i2c_write(0x75); // masukkan nilai 0x75ke EEPROM i2c_stop(); // set stop conditon = release bus
sequence untuk membaca data secara satu persatu :
Code:
i2c_start_wait(Dev24C02+I2C_WRITE); // awal menulis alamat dulu i2c_write(0x05); // tulis alamat yang akan dibaca = 5 i2c_rep_start(Dev24C02+I2C_READ); // mode baca baca = i2c_readNak(); // baca byte dari EEPROM i2c_stop();
sequence untuk membaca seluruh data EEPROM secara berulang :
Code:
i2c_rep_start(Dev24C02+I2C_READ); // mode baca for(;;) baca=i2c_readAck(); // baca terus berulang
setelah mengerti langkah2 ini, maka isi dari ic eeprom dapat diakses dengan mudah.
>> UBAH FILE AUDIO MENJADI FORMAT WAV -PCM -8bit -Mono - 6000hz (48kbps)
caranya ? gunakan software WAVEPAD atau yang lain ..untuk IC 24C64 panjang audio yang dapat diputar berkisar 1.2 - 1.5 detik ...wah pendek banget...ya karena memang tanpa kompresi kok...
selanjutnya jangan lupa download langsung file wav tadi ke dalam ic seperti penjelasan sebelumnya.
SKEMATIK :

*)) ralat R2 dan R3 = 4K7 ohm
lepaskan koneksi ke SDA/SCL ke MOSI/SCK (setelah pull up 4k7)pada saat programming, sehingga IC eeprom tidak terhapus dan pin ISP tidak ter pull up
SCRIPT
Jika masih bingung, harap membaca pembahasan sebelumnya untuk memutar wav di mega8515 , karena hanya diubah sedikit saja
Code:
#define F_CPU 8000000UL #include <stdint.h> #include <avr/io.h> #include <avr/interrupt.h> #include "i2cmaster.h" //#define SAMPLE_RATE 8000; #define Dev24C64 0xA0 int sample_count; //inisialisasi PWM void pwm_init(void) { // gunakan OC1A sebagai output DDRB = _BV(PB3); /* * clear OC1A on compare match * set OC1A at BOTTOM, non-inverting mode * Fast PWM, 8bit */ TCCR1A = _BV(COM1A1) | _BV(WGM10); /* * Fast PWM, 8bit * Prescaler: clk/1 = 8MHz * PWM frequency = 8MHz / (255 + 1) = 31.25kHz */ TCCR1B = _BV(WGM12) | _BV(CS10); /* set initial duty cycle to zero */ OCR1A = 0; /* Setup Timer0 */ TCCR0B|=(1<<CS00); TCNT0=0; TIMSK|=(1<<TOIE0); sample_count = 4; sei(); //Enable interrupts } ISR(TIMER0_OVF_vect) { sample_count--; // menggunakan 4 step if (sample_count == 0) { sample_count = 4; OCR1A = i2c_readAck(); // baca memory secara loop } } int main(void) { i2c_init(); pwm_init(); //inisialisasi baca secara terus menerus i2c_rep_start(Dev24C64 + I2C_READ); while(1);//muter terus }
hasilnya seru kayak gini nih......

kalo bisa pake memory yang lebih besar biar lebih panjang lagunya
2/16/2013
Animasi LED
Diposkan oleh
Unknown
di
07:08

Berdasarkan reques seorang pembaca , posting saya kali ini sesuai dengan video youtube dibawah ini.
Sebenernya project serupa pernah saya bahas di project led berjalan dengan ic 4017, hanya kali ini animasinya lumayan keren dan memakai banyak LED. Untuk mendrive LED yang banyak dibutuhkan transistor dan perhitungan tegangan sumber vs jumlah LED beserta kombinasi rangkaian paralel/seri sesuai rumus di www.ledcalculator.net
Gambaran driving led jumlah banyak seperti gambar dibawah ini.
Gambar yang diatas menunjukkan 5 buah LED yang langsung dihubungkan ke output 4017 karena ic 4017 diberi tegangan 12volt dimana jika memakai 5 LED maka masing-masing LED mendapatkan tegangan yang cukup. Jika Led lebih banyak maka diperlukan perhitungan seri-paralel sesuai rumus.
Pada video youtube terdapat 4 buah rangkaian LED yang disusun membentuk karakter. Berdasarkan sifat output 4017 maka untuk membuat animasi seperti pada video maka mudah saja dengan memberikan output single pada out 0 - 1 - 2 - 3 ke masing-masing huruf. Sedangkan untuk membikin kedip bareng maka yang disambungkan secara paralel adalah output 5 - 7 - 9. Agar animasi sesuai dan tidak numpuk maka ditambahkan dioda small signal 1N4148 yang disusun seperti rangkaian berikut:
(klik untuk memperbesar)
Mudah Bukan ? Selamat Mencoba
2/14/2013
Menghitung RPM (TACHOMETER) dari Radiasi Kabel busi
Diposkan oleh
Unknown
di
07:02

RPM ( round per minute ) adalah angka yang menunjukkan banyaknya putaran suatu system dalam 1 menit. Biasanya dimanfaatkan sebagai penunjuk putaran mesin pada kendaraan bermotor, sehingga mempermudah dalam pengaturan tenaga dan bahan bakar. Alat pengukur ini lazim disebut TACHOMETER.
Pada sebuah kendaraan roda 2, putaran mesin dapat diperoleh dengan menghitung pulsa pada dinamo, tetapi hal ini susah karena harus membuka blok mesin. Cara paling mudah adalah dengan memanfaatkan radiasi dari CDI ke BUSI yang dapat dihitung jumlah pulsanya. Jadi dengan menggunakan prinsip radiasi elektromagnet, cukup dengan melilitkan kawat tembaga/email/enamel/kabel dinamo ke kabel di dekat ujung tutup busi, maka tegangan yang konstan (pulsa) dapat diperoleh. Jumlah lilitan tidaklah penting, cukup dikira-kira saja sampai tegangan yg dihasilkan dapat mengaktifkan transistor sebagai switch penghitung.
Tidak perlu menunggu 1 menit untuk mengeluarkan nilai RPM, dengan memanfaatkan fasilitas counter pada microcontroller maka nilai RPM dapat diperoleh. Semisal kita melakukan sampling pengambilan data RPM per 1 detik. Maka RPM didapat melalui rumus :
RPM = Jumlah Pulsa x 60
jika ingin lebih cepat, semisal 0,5 detik, maka nilai RPM didapat dengan mengalikan jumlah pulsa yg terjadi dengan angka 120.

Skematik dibawah ini memanfaatkan microcontroller attiny2313, dan menggunakan transistor sebagai switch pulsa.
Skematik dibawah ini memanfaatkan microcontroller attiny2313, dan menggunakan transistor sebagai switch pulsa.
sedangkan scriptnya seperti berikut ini :
#define F_CPU 1000000UL // frek clock internal#include <avr/io.h>#include <util/delay.h>#include <avr/eeprom.h>#include <inttypes.h>#include <avr/interrupt.h>#include <avr/iotn2313.h>#include <avr/pgmspace.h>uint8_t angka1=10 ;uint8_t angka2=10 ;uint8_t angka3=10 ;uint8_t angka4=10 ;uint8_t segstep=0;uint8_t kalibrasi=3;int number=0;void conv_segmen(uint8_t digit)//nampilin segmen{switch (digit){case 0 :{PORTB &= ~_BV(PB0) & ~_BV(PB1) & ~_BV(PB2) & ~_BV(PB3) & ~_BV(PB4) & ~_BV(PB5);PORTB |= _BV(PB6) ;break;}case 1 :{PORTB &= ~_BV(PB1) & ~_BV(PB2) ;PORTB |= _BV(PB0) | _BV(PB3) | _BV(PB4) | _BV(PB5) | _BV(PB6) ;break;}case 2 :{PORTB &= ~_BV(PB0) & ~_BV(PB1) & ~_BV(PB3) & ~_BV(PB4) & ~_BV(PB6) ;PORTB |= _BV(PB2) | _BV(PB5) ;break;}case 3 :{PORTB &= ~_BV(PB0) & ~_BV(PB1) & ~_BV(PB2) & ~_BV(PB3) & ~_BV(PB6) ;PORTB |= _BV(PB4) | _BV(PB5) ;break;}case 4 :{PORTB &= ~_BV(PB1) & ~_BV(PB2) & ~_BV(PB5) & ~_BV(PB6) ;PORTB |= _BV(PB0) | _BV(PB3) | _BV(PB4) ;break;}case 5 :{PORTB &= ~_BV(PB0) & ~_BV(PB2) & ~_BV(PB3) & ~_BV(PB5) & ~_BV(PB6) ;PORTB |= _BV(PB1) | _BV(PB4) ;break;}case 6 :{PORTB &= ~_BV(PB0) & ~_BV(PB2) & ~_BV(PB3) & ~_BV(PB4) & ~_BV(PB5) & ~_BV(PB6) ;PORTB |= _BV(PB1) ;break;}case 7 :{PORTB &= ~_BV(PB0) & ~_BV(PB1) & ~_BV(PB2) ;PORTB |= _BV(PB3) | _BV(PB4) | _BV(PB5)| _BV(PB6) ;break;}case 8 :{PORTB &= ~_BV(PB0) & ~_BV(PB1) & ~_BV(PB2) & ~_BV(PB3) & ~_BV(PB4) & ~_BV(PB5) & ~_BV(PB6);break;}case 9 :{PORTB &= ~_BV(PB0) & ~_BV(PB1) & ~_BV(PB2) & ~_BV(PB3) & ~_BV(PB5) & ~_BV(PB6);PORTB |= _BV(PB4) ;break;}case 10 :{PORTB |= _BV(PB0) | _BV(PB1) | _BV(PB2) | _BV(PB3) | _BV(PB4) | _BV(PB5) | _BV(PB6) ;break;}}}void init_ctr(void) //counter tampilan{TCCR0A |= (1 << WGM01); // Configure timer 0 for CTC modeTIMSK |= (1 << OCIE0A); // Enable CTC interruptOCR0A = 50; // Set CTC compare value till blink disapear at 1MHz AVR clock, with a prescaler of 64TCCR0B |= (1 << CS01)|(1 << CS00); // Start timer at Fcpu/64}void init_ctr1(void)//counter perhitungan 600ms sampling{TCCR1B |= (1 << WGM12); // Configure timer 1 for CTC modeTIMSK |= (1 << OCIE1A); // Enable CTC interruptOCR1A = 586; //compare the CTC A = 600ms =586TCCR1B |= ((1 << CS10) | (1 << CS12)); // Start timer at Fcpu/1024}ISR(TIMER1_COMPA_vect) //timer capture RPM counter{ uint16_t rpm;switch(kalibrasi) {case 1 :{rpm=number/100;break; }case 2 :{rpm=number/10;break; }case 3 :{rpm=number;break; }case 4 :{rpm=number*10;break; }case 5 :{rpm=number*100;break; }default: rpm=0;}angka1 = rpm%10;if(rpm>9) angka2 = ((rpm%100) - (rpm%10)) /10 ;else angka2=10;if(rpm>99) angka3 = ((rpm%1000) - (rpm%100)) /100 ;else angka3=10;if(rpm>999) angka4 = ((rpm%10000) - (rpm%1000)) /1000 ;else angka4=10;number=0;}ISR(TIMER0_COMPA_vect) // timer pindah kolom{segstep++;switch(segstep) {case 1 :{ conv_segmen(10);PORTD |= _BV(PD0);PORTD &= ~_BV(PD1) & ~_BV(PD4) & ~_BV(PD5) ;conv_segmen(angka1);break;}case 2 :{ conv_segmen(10);PORTD |= _BV(PD1);PORTD &= ~_BV(PD0) & ~_BV(PD4) & ~_BV(PD5) ;conv_segmen(angka2);break;}case 3 :{ conv_segmen(10);PORTD |= _BV(PD4);PORTD &= ~_BV(PD1) & ~_BV(PD0) & ~_BV(PD5) ;conv_segmen(angka3);break;}case 4 :{ conv_segmen(10);PORTD |= _BV(PD5);PORTD &= ~_BV(PD1) & ~_BV(PD4) & ~_BV(PD0) ;conv_segmen(angka4);segstep=0;break;}}}SIGNAL (SIG_INT0){number++;}SIGNAL (SIG_INT1){cli();conv_segmen(10);_delay_ms(500);kalibrasi++;if (kalibrasi == 6) kalibrasi=1;eeprom_write_byte((uint8_t*)10, kalibrasi);sei();}void baca_eeprom(void){kalibrasi = eeprom_read_byte((uint8_t*)10);if(kalibrasi == 0xFF) kalibrasi=3;}int main(void){GIMSK |= (1<<INT0)|(1<<INT1);MCUCR |= (1<<ISC01)| (1<<ISC11); //fall edgeDDRD = _BV(PD0) | _BV(PD1) | _BV(PD4) | _BV(PD5) ; // seg selectDDRB = _BV(PB0) | _BV(PB1) | _BV(PB2) | _BV(PB3) | _BV(PB4) | _BV(PB5) | _BV(PB6) ; // seg a,b,c,d,e,f,ginit_ctr();init_ctr1();baca_eeprom();sei();while(1){}}
SELAMAT MENCOBA
Subscribe to:
Posts (Atom)
Aulia DirUt. Powered by Blogger.
Labels
- ACCELERATOR (5)
- ACTIVATOR (8)
- Anti Virus (7)
- AUDIO EDITOR (11)
- BAHAYA MAKANAN CEPAT SAJI (1)
- delphi (43)
- elecktonik (3)
- elecktronik (133)
- ESR (1)
- Game (2)
- Game Android (1)
- Hand Phone (4)
- Hardware (72)
- Jamu (3)
- Komputer (64)
- Lain-lain (51)
- mikrokontroll (120)
- modem (7)
- Motivasi (8)
- NETWORK (8)
- Pemancar (1)
- PIC Project (10)
- PRINTER (4)
- Shio (12)
- Software (45)
- Syari'at Islam (1)
- Tip and Trik (165)
- travo (11)
- Tutor css dan jquery (1)
- Tutor flash (7)
- Tv (6)
- Utility (2)
- Zodiak (17)
Followers
Templates by Nano Yulianto | CSS3 by David Walsh | Powered by {N}Code & Blogger